// 事件系统，处理事件 ；
// 基于一种设计模式 设计处理 ，观察者模式 ，自定义事件。
// 预定义事件 ，系统已经定义好的事件 。
// 需要引入事件类  
let EventEmiter = require("events");
// 实例化事件类
let myevent = new EventEmiter();

// 1.绑定自定义事件
// on类似addEventListener
let fn1 = function () {
  console.log("我是事件1");
}
let fn2 = function () {
  console.log("我是事件2");
}

// 事件绑定事件
myevent.on("mye1", fn1);
myevent.on("mye1", fn2);

// 只执行一次事件
// myevent.once("mye1", fn1);
// myevent.once("mye1", fn2);

// 移除事件
// 第一种方式 off
// myevent.off("mye1", fn2);
// 第二种方式 removeListener
// myevent.removeListener("mye1", fn1)
// 第三种方式 移除所有事件
// myevent.removeAllListeners("mye1");


// 2.触发自定义事件
setTimeout(() => {
  myevent.emit("mye1"); //自定义触发事件关键字emit
  // myevent.emit("mye1")
}, 1000)

// 3.查看事件绑定的数量
let count = myevent.listenerCount("mye1");
console.log(count);


/* 
一、绑定事件 
    1.on(“事件名”,事件函数)
    2.once(“事件名”,事件函数) :  只会执行一次
二、移除事件
    1.off("事件名",事件函数)
    2.removeListener("事件名",事件函数);
    3.removeAllListeners("事件名");移除所有事件名下的事件
三、查看绑定的事件个数
    listenerCount("事件名称");

*/